home *** CD-ROM | disk | FTP | other *** search
- /* $VER: ArcTrans v1.1 (29.3.95) by J. Tierney
-
- Archive Transformer v1.1
- 3/29/95 J. Tierney
-
- Usage: ArcTrans.rexx <source archive> [<dest dir>] [AUTO=1|ON]
- - AUTO=1 - No requester. ArcTrans determines Lha/LZX/Best option.
- */
- PARSE ARG arc dest 'AUTO=' auto .
- IF auto > 0 | UPPER(auto) = 'ON' THEN auto = 1
- ELSE auto = 0
- arc = STRIP(arc)
- dest = STRIP(dest)
-
- tempdir = 'T:ArcTemp'
- IF ~EXISTS(tempdir) THEN ADDRESS COMMAND 'C:MakeDir >NIL:' tempdir
- tempdir = tempdir || '/'
- /* IF RIGHT(tempdir, 1) ~= ':' & RIGHT(tempdir, 1) ~= '/' THEN tempdir = tempdir || '/' */
-
- IF ~auto THEN DO
- IF ~SHOW('L', 'rexxreqtools.library') THEN DO
- IF ~ADDLIB('rexxreqtools.library', 0, -30) THEN DO
- SAY 'Could not open "rexxreqtools.library".'
- EXIT 10
- END
- END
-
- ADDRESS COMMAND 'C:GetPubName >PIPE:arctrans'
- CALL OPEN('pipe', 'PIPE:arctrans')
- pub = READLN('pipe')
- CALL CLOSE('pipe')
- END
-
- IF dest = '' THEN dest = 'SD0:'
- IF RIGHT(dest, 1) ~= ':' & RIGHT(dest, 1) ~= '/' THEN dest = dest || '/'
-
- y = LASTPOS('.', arc)
- arcname = SUBSTR(arc, 1, y-1)
- ext = FIND('LHA LZX', UPPER(SUBSTR(arc, y+1)))
-
- x = LASTPOS('/', arcname)
- IF x = 0 THEN x = LASTPOS(':', arcname)
- arcname = SUBSTR(arcname, x+1)
-
- dest = dest || arcname
- arctype = C2D(BITXOR(ext, 3))
-
- IF ~auto THEN DO
- arctype = RTEZREQUEST('Transform To:', 'Lh_a|LZ_X|_Best|_Cancel', 'ArcTrans', 'rt_pubscrname=' || pub 'rt_reqpos=reqpos_centerscr rtez_defaultresponse=' || arctype)
- CALL REMLIB('rexxreqtools.library')
- END
-
- IF arctype = 0 THEN EXIT 0
- IF arctype = ext THEN DO
- SAY arcname 'is already an' WORD('Lha LZX', ext) 'archive.'
- EXIT 0
- END
-
- IF ~auto THEN SAY 'Uncompressing...'
- ADDRESS COMMAND 'SYS:RexxC/RX >NIL: REXX:ArcMast.rexx' arc 'x' tempdir
-
- olddir = PRAGMA('D', tempdir)
- IF (arctype ~= ext) & (BITTST(arctype, 0)) THEN DO
- IF ~auto THEN SAY 'Compressing with Lha...'
- ADDRESS COMMAND 'C:Lha -r -q a' dest '#?'
- END
- IF (arctype ~= ext) & (BITTST(arctype, 1)) THEN DO
- IF ~auto THEN SAY 'Compressing with LZX...'
- ADDRESS COMMAND 'C:LZX -r -q -9 -e -Qf a' dest '#?'
- END
-
- CALL PRAGMA('D', olddir)
- ADDRESS COMMAND 'C:Delete' tempdir 'ALL QUIET'
- IF arctype ~= 3 THEN EXIT 0
-
- IF ~auto THEN SAY 'Size Check...'
- IF EXISTS(dest || '.lha') THEN DO
- lhafile = dest || '.lha'
- CALL OPEN('lha', lhafile, 'R')
- lhasize = SEEK('lha', 0, 'E')
- CALL CLOSE('lha')
- END
- ELSE EXIT 0
- IF EXISTS(dest || '.LZX') THEN DO
- lzxfile = dest || '.LZX'
- CALL OPEN('lzx', lzxfile, 'R')
- lzxsize = SEEK('lzx', 0, 'E')
- CALL CLOSE('lzx')
- END
- ELSE EXIT 0
- IF ~auto THEN DO
- SAY '-' lhafile '=' lhasize 'bytes.'
- SAY '-' lzxfile '=' lzxsize 'bytes.'
- END
- IF lhasize > lzxsize THEN DO
- IF ~auto THEN SAY 'Deleting' lhafile || '...'
- ADDRESS COMMAND 'C:DELETE' dest || '.lha QUIET'
- END
- ELSE DO
- IF ~auto THEN SAY 'Deleting' lzxfile || '...'
- ADDRESS COMMAND 'C:DELETE' dest || '.LZX QUIET'
- END
-
-